package com.app.manage.utils;

import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class DataUtils {


    /**
     * 求平均数
     * @param ws
     * @return
     */
    public static String calAvg(Integer ws,String... strs){
        String total = biAdd(ws,strs);
        return  biDiv(2,total,String.valueOf(strs.length),null);
    }


    /**
     * a<=b
     * @param a
     * @param b
     * @return
     */
    public static Boolean compareLe(String a,String b){
        if(StringUtils.isEmpty(a)){
            a = "0";
        }
        if(StringUtils.isEmpty(b)){
            b = "0";
        }
        return new BigDecimal(a).compareTo(new BigDecimal(b))<=0;
    }

    /**
     * a >= b
     * @param a
     * @param b
     * @return
     */
    public static Boolean compareTo(String a,String b){
        if(StringUtils.isEmpty(a)){
            a = "0";
        }
        if(StringUtils.isEmpty(b)){
            b = "0";
        }
        if(StringUtils.isEmpty(b)){
            return true;
        }
        return  new BigDecimal(a).compareTo(new BigDecimal(b)) >=0;
    }

    public static  String findMax(String... as){
        BigDecimal bz = new BigDecimal("0");
        for(String a : as){
            try {
                if(bz.compareTo(new BigDecimal(a)) <= 0){
                    bz = new BigDecimal(a);
                }
            }catch (Exception e){}

        }
        return bz.toPlainString();
    }

    /**
     * 相加
     * @param ws
     * @param as
     * @return
     */
    public static String biAdd(int ws,String... as ){
        BigDecimal sum = new BigDecimal("0");
        for(String a : as ){
            if(StringUtils.isNotEmpty(a)){
                sum = sum.add(new BigDecimal(a));
            }
        }
        sum = sum.setScale(2, RoundingMode.DOWN);
        return sum.toPlainString();
    }

    /**
     * 相处
     * @param ws
     * @param cs
     * @param bcs
     * @param endWith
     * @return
     */
    public static String biDiv(int ws,String cs,String bcs,String endWith){
        if(StringUtils.isEmpty(bcs)){
            return StringUtils.isNotEmpty(endWith)?("100"+endWith):"100";
        }
        if(new BigDecimal(bcs).compareTo(BigDecimal.ZERO) == 0){
            return StringUtils.isNotEmpty(endWith)?("0"+endWith):"0";
        }
        BigDecimal res = new BigDecimal(cs).divide(new BigDecimal(bcs),ws, RoundingMode.HALF_UP);
        return StringUtils.isNotEmpty(endWith)?(res.toString()+endWith):res.toPlainString();
    }

    /**
     * 减肥
     * @param ws
     * @param a
     * @param b
     * @return
     */
    public static String biSub(int ws,String a,String b){
        a = StringUtils.isEmpty(a)?"0":a;
        b = StringUtils.isEmpty(b)?"0":b;
        BigDecimal res = new BigDecimal(a).subtract(new BigDecimal(b));
        res = res.setScale(ws,RoundingMode.HALF_UP);
        return res.toPlainString();
    }

    /**
     * 乘法
     * @param ws
     * @param as
     * @return
     */
    public static String biMul(int ws,String... as){
        BigDecimal res = new BigDecimal("1");
        for(String a : as){
            if(StringUtils.isNotEmpty(a)){
                res = res.multiply(new BigDecimal(a));
            }
        }
        res = res.setScale(ws,RoundingMode.HALF_UP);
        return res.toPlainString();
    }

    public static void main(String[] args) {
        String res = findMax("5.22","孟祥忠","3.1");
        System.err.println(res);
    }
}
